import {BaseService} from "@/services/baseService";
import request from "@/utils/request";
import {baseServiceEnum} from "@/services/enum";
import {PageQueryParam, PageResult} from "@/types/base";

class TabMenuService extends BaseService {

  constructor() {
    super(baseServiceEnum.tabMenu);
  }

  /**
   * 获取所有文件夹列表
   *
   * @param data
   */
  apiListAll(data: any) {
    return request({
      url: `/${(this.__module)}/listAll`,
      method: 'post',
      params: data,
    });
  }

}

const tabMenuService = new TabMenuService();
export {tabMenuService};

export const MenuType = [
  {
    value: '1',
    label: '菜单',
  },
  {
    value: '2',
    label: '目录',
  },
  {
    value: '3',
    label: '资源',
  },
  {
    value: '4',
    label: '组件',
  },
];

/**
 * 查询参数类型
 */
export interface TabMenuQueryParam extends PageQueryParam {
  name?: string;
  type?: string;
}

/**
 * 分页列表项
 */
export interface TabMenuItem {
  id: string | undefined//		integer
  icon: string//	图标	string
  name: string//	名称	string
  sort: string//	排序	integer
  type: string//	目录类型 1-菜单 2-目录 3-资源 4-组件	integer
  config: string//		string
  relevanceId: string // "/**\n     * 关联id\n     */",
  parentId: string // "/**\n     * 父级id\n     */",
  tabResourcesVO: TabResourcesItem
  "children": TabMenuItem[]

  createBy: string//	创建人	integer
  createOn: string//	创建时间	string
  modifyBy: string//	修改人	integer
  modifyOn: string//	修改时间	string
  deleteFlag: string//		boolean
}

/**
 * 分页列表项
 */
export interface TabResourcesItem {
  id: string | undefined//		integer
  labelIds: string // "/**\n     * 关联标签id（”,”逗号隔开）\n     */",
  labelIdList: string[] // "/**\n     * 关联标签id（”,”逗号隔开）\n     */",
  name: string // "/**\n     * 组件名称\n     */",
  sort: string // "/**\n     * 排序\n     */",
  type: string // "/**\n     * 类型,区分组件。枚举类型和前端约定好\n     */",
  icons: string // "/**\n     * 图表\n     */",
  url: string //"/**\n     * URL地址\n     */",
  remark: string // "/**\n     * 备注\n     */",
  config: string // "/**\n     * 配置信息\n     */",

  createBy: string//	创建人	integer
  createOn: string//	创建时间	string
  modifyBy: string//	修改人	integer
  modifyOn: string//	修改时间	string
  deleteFlag: string//		boolean
}


/**
 * 分页项类型
 */
export type TabMenuPageResult = PageResult<TabMenuItem[]>;
